package avicit.bdp.dms.prm.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.common.dto.BdpPrmEngineResourceDTO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author DIGITAL-MAYANJ
 */
public interface BdpPrmEngineResourceDao extends BaseDAO<BdpPrmEngineResourceDTO> {

    /**
     * 分页查询  引擎资源表
     *
     * @param type     类型：0--计算引擎；1--存储引擎
     * @param keyWords 关键词
     * @return 分页数据
     */
    Page<BdpPrmEngineResourceDTO> searchBdpPrmEngineResourceByPage(@Param("type") Integer type,
                                                                   @Param("resourceType") Integer resourceType,
                                                                   @Param("keyWords") String keyWords,
                                                                   @Param("wordSecretList") List<String> wordSecretList);

    /**
     * 新增引擎资源表
     *
     * @param bdpPrmEngineResourceDTO 保存对象
     * @return 更新记录数
     */
    int insertBdpPrmEngineResource(BdpPrmEngineResourceDTO bdpPrmEngineResourceDTO);

    /**
     * 批量新增 引擎资源表
     *
     * @param dtoList 保存对象集合
     * @return 更新记录数
     */
    int insertBdpPrmEngineResourceList(@Param("dtoList") List<BdpPrmEngineResourceDTO> dtoList);


    /**
     * 更新全部对象 引擎资源表
     *
     * @param bdpPrmEngineResourceDTO 更新对象
     * @return 更新记录数
     */
    int updateBdpPrmEngineResourceAll(BdpPrmEngineResourceDTO bdpPrmEngineResourceDTO);


    /**
     * 按主键删除 引擎资源表
     *
     * @param id 主键id
     * @return 删除记录数
     */
    int deleteBdpPrmEngineResourceById(@Param("id") String id);

    /**
     * @param type 类型
     * @param systemDefault 是否系统默认
     * 更新所有的存储引擎资源的系统默认值
     */
    void updateSystemDefaultState(@Param("type") int type, @Param("systemDefault") int systemDefault);

    /**
     * 查询资源引用情况
     * @param id 资源ID
     * @return 引用总数
     */
    int selectResourceUseState(@Param("id") String id);

    /**
     *更新为系统默认
     * @author felix
     * @date 2021/6/29 15:09
     */
    void updateSystemDefaultById(@Param("id") String id);
    /**
     * 获取默认的存储引擎信息
     *
     * @param	type
     * @return avicit.bdp.common.dto.BdpPrmEngineResourceDTO
     *
     * @date 2023/9/13 9:22
     */
    BdpPrmEngineResourceDTO findDefaultEngineResource(@Param("type") int type);

}